package com.iskyline.utils;


import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * @Description: 文件工具类
 * @Author:      iskyline
 * @JDK:         1.8
 * @Date:        2019/8/10 17:24
 */
public class FileUtils {
    
    /**
     * @Description: 判断是否为空
     * NULL,不存在,文件夹下没有任何内容，文件中没有任何内容都返回true
     * @Param:       [file]
     * @return:      boolean
     * @Author:      iskyline
     * @JDK:         1.8
     * @Date:        2019/8/10 17:52
     */
    public static boolean isEmpty(File file){
        if (null==file){
            return true;
        }
        if(!file.exists()){
            return true;
        }
        if(file.isFile() && file.length()==0){
            return true;
        }
        if(file.isDirectory() && (null==file.list() || file.list().length==0)){
            return true;
        }
        return false;
    }

    /**
     * @Description: 获取文件夹下所有的子文件 (只获取第一子层)
     * @Param:       [file]
     * @return:      java.util.List<java.io.File>
     * @Author:      iskyline
     * @JDK:         1.8
     * @Date:        2019/8/10 19:47
     */
    public static List<File> scanFiles(File file){
        return scanFiles(file,File::isFile);
    }

    /**
     * @Description: 获取文件夹下所有的子文件夹 (只获取第一子层)
     * @Param:       [file]
     * @return:      java.util.List<java.io.File>
     * @Author:      iskyline
     * @JDK:         1.8
     * @Date:        2019/8/10 19:56
     */
    public static List<File> scanFolder(File file){
        return scanFiles(file,File::isDirectory);
    }
    
    private static List<File> scanFiles(File file, FileFilter fileFilter){
        if(isEmpty(file)){
            return Collections.emptyList();
        }
        File[] files = file.listFiles(fileFilter);
        if(null==files){
            return Collections.emptyList();
        }
        return Arrays.asList(files);
    }

    public static void main(String[] args) {
        File file = new File("aaa");
        file = new File(System.getenv("JAVA_HOME"));
//        file = new File(System.getProperty("sun.boot.class.path").split(";")[0]);

        //System.out.println(FileUtils.isEmpty(file));
        System.out.println(FileUtils.scanFiles(file));
        System.out.println(FileUtils.scanFolder(file));
    }

}
